package com.itheima.d1_polymorphism;

/**
 *
 * 定义方法时，使用父类类型作为形参，可以接收一切子类对象，扩展行更强，更便利。
 *
 * 什么是多态？
 * 多态是在继承/实现情况下的一种现象，表现为：对象多态、行为多态。
 *
 * 多态的前提
 * 有继承/实现关系；存在父类引用子类对象；存在方法重写。
 * 多态的一个注意事项
 * 多态是对象、行为的多态，Java中的属性(成员变量)不谈多态。
 */
public class Test {
    public static void main(String[] args) {
        // 目标：认识多态：对象多态，行为多态。
        // 1、对象多态
        //像这种父类变量相同，但是接收的子类对象p1和p2分别指向不同的对象就是 对象多态。
        People p1 = new Teacher();
        p1.run(); // 识别技巧：编译看左边，运行看右边  (意思是指真实运行时会看真正的对象那边)
        System.out.println(p1.name);  // 注意：对于变量，编译看左边，运行也是看左边（因为Java中的属性(成员变量)不谈多态）

        People p2 = new Student();
        //p1和p2代表的对象不同，并且调用的都是各自重写的run方法，就是 行为多态
        p2.run(); // 识别技巧：编译看左边，运行看右边
        System.out.println(p2.name); // 注意：对于变量，编译看左边，运行也是看左边（Java中的属性(成员变量)不谈多态）
    }
}
